import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("List 组件示例")

# 创建一个 Frame 容器
frame = ttk.Frame(root, padding="10")
frame.pack(fill=tk.BOTH, expand=True)

# 创建一个标签
label = tk.Label(frame, text="编程语言列表：")
label.pack(anchor=tk.W, pady=(0, 5))

# 创建第一个列表框，展示基本属性
list1 = tk.Listbox(
    frame,
    background="#ffffff",  # 设置背景颜色
    foreground="#333333",  # 设置文字颜色
    width=20,  # 设置宽度
    height=6,  # 设置高度（以行数为单位）
    selectbackground="#0078d7",  # 设置选中项的背景颜色
)
list1.pack(side=tk.LEFT, padx=5)

# 添加一些项目到列表框
programming_languages = [
    "Python",
    "Java",
    "C++",
    "JavaScript",
    "Ruby",
    "Go"
]

for lang in programming_languages:
    list1.insert(tk.END, lang)

# 创建第二个列表框，展示滚动条功能
frame2 = ttk.Frame(frame)
frame2.pack(side=tk.LEFT, padx=5)

# 创建垂直滚动条
scrollbar = ttk.Scrollbar(frame2)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# 创建列表框并关联滚动条
list2 = tk.Listbox(
    frame2,
    highlightcolor="#0078d7",  # 设置高亮边框颜色
    yscrollcommand=scrollbar.set,  # 设置垂直滚动条
    xscrollcommand=None,  # 设置水平滚动（这里禁用）
    width=20,
    height=6
)
list2.pack(side=tk.LEFT)

# 配置滚动条与列表框的关联
scrollbar.config(command=list2.yview)

# 添加更多项目到第二个列表框以演示滚动效果
more_languages = [
    "PHP",
    "Swift",
    "Kotlin",
    "Rust",
    "TypeScript",
    "Scala",
    "Perl",
    "Haskell",
    "R",
    "MATLAB"
]

for lang in more_languages:
    list2.insert(tk.END, lang)

# 启动主循环
root.mainloop()